package com.rgs.se.sort;




public class _1Quick {

    public static void sort(int[] a, int low, int high) {
//这是递归的终止条件
        if(low >= high) return;
        //第一轮排序中，把low开始，hight作位结束,a[i]作位基准值
        int i = low;
        int j = high;
        int k = a[i];

        //这是一轮排序结束的条件
        while(i < j) {
            //当a[j]>基准时，j就向左移。i<j是为了防止J越界。
            while (a[j] >= k && i < j) {
                j--;
            }
            SortUtil.Temp(a,i,j);

            //当a[i]<基准时，j就向右移。i<j是为了防止i越界。
            while (a[i] <= k && i < j) {
                i++;
            }
            SortUtil.Temp(a,i,j);
        }

        //左边和右边递归排序
        sort(a,low,i-1);
        sort(a,i+1,high);
    }
}
